Comparison
The biggest difference between Hyper Fetch
and other libraries is the opinionated architecture and assumptions on
which it is built. Hyper Fetchβs core features are written in TS without dependencies; because of this, it can work
in many environments without a specific connection to a given framework.
Hyper Fetch is not just a wrapper; it offers full control over the flow and observation of data exchange. Our main goals were to introduce:
- a data storage standard,
- offer an embedded HTTP client,
- reduce setup times,
- solve major architectural difficulties.
info
Producing an accurate and unbiased comparison is quite a challenge. Libraries develop quickly, so if you notice that our data needs to be corrected, please let us know by opening an issue.
Why Hyper Fetch Is Uniqueβ
- Easy upload/download progress and ETA tracking
- Supports request queueing and many dispatching strategies!
- Command / Builder pattern gives you amazing control over requests at any time
- Code-sharing architecture lets [testers to hook into development setup and types](/documentation/01-Getting Started/Testing.mdx)
- Features flat side-effects helper hooks annotation and promotes readable code
- Provides structure [recipes](/documentation/01-Getting Started/Development.mdx#structure) for large scale applications that significantly limit maintenance costs.
- Core features include offline and persistence support, giving you full control over your data
Featuresβ
β
- Documented support
π΅ - Require additional Plugin/Coding
π - Partial support
π΄ - Not supported / Not documented
Hyper Fetch | Query | SWR | Apollo | |
---|---|---|---|---|
Supported environments | Any | Any | React | Any |
Protocols | Any | Any | Any | GraphQL |
Caching Approach | Command Schema | Hierarchical Key > Value | Unique Key > Value | Normalized Schema |
Cache Key Strategy | Command Key | JSON | JSON | GraphQL Query |
Data Change Detection | Deep Comparison | Deep Comparison | Deep Comparison | Deep Comparison |
Data Memoization | Normalized Identity | Full Structural Sharing | Identity | Normalized Identity |
Queue Key Strategy | Command Key | N/A | N/A | N/A |
Devtools | β | β | π΅ | β |
Server Connection Setup βΉοΈ | β | π΅ | π΅ | β |
Shared Command βΉοΈ | β | π΅ | π΅ | β |
Dependency tracking βΉοΈ | β | β | β | β |
Cache Persistence | β | β | β | β |
Requests Persistence βΉοΈ | β | π΄ | π΄ | π΄ |
Download ETA βΉοΈ | β | π΅ | π΅ | π΅ |
Uploading ETA βΉοΈ | β | π΅ | π΅ | π΅ |
Pooling βΉοΈ | β | β | β | β |
Dependent Queries βΉοΈ | β | β | β | β |
Paginated Queries | β | β | β | β |
Query Params Parsing βΉοΈ | β | π΅ | π΅ | π΅ |
Queueing βΉοΈ | β | π΄ | π΄ | π΄ |
Retries βΉοΈ | β | β | β | π΅ |
Default Client βΉοΈ | β | π΄ | π΄ | β |
Infinite Queries βΉοΈ | β | β | β | β |
SSR βΉοΈ | β | β | β | β |
Initial Data βΉοΈ | β | β | β | β |
Cache Hydration βΉοΈ | β | β | π΄ | β |
Garbage Collecting βΉοΈ | β | β | π΄ | π΄ |
Pre Request Intercepting βΉοΈ | β | π΅ | π΅ | β |
Post Request Intercepting βΉοΈ | β | π΅ | π΅ | β |
Prefetching βΉοΈ | β | β | π΅ | β |
Cancellation βΉοΈ | β | β | π΄ | π΄ |
Queue Cancellation βΉοΈ | β | π΄ | π΄ | π΄ |
Authentication βΉοΈ | β | π΅ | π΅ | β |
Stale While Revalidate βΉοΈ | β | β | β | β |
Refresh Data | β | β | β | β |
Offline Request Pause βΉοΈ | β | β | π΄ | π΄ |
Network Status Re-fetching βΉοΈ | β | β | β | β |
Window Focus Re-fetching βΉοΈ | β | β | β | π΄ |
Normalized Caching βΉοΈ | β | π΄ | π΄ | β |
Automatic Re-fetch After Mutation βΉοΈ | β | π΅ | π΅ | β |
Query Matching βΉοΈ | β | β | π΄ | π΄ |
Cache Matching βΉοΈ | β | β | β | β |
Query Lifecycle Events βΉοΈ | β | π΄ | π΄ | β |
Data Flow Standard βΉοΈ | β | π΄ | π΄ | β |
Request Start/Stop βΉοΈ | β | π΄ | π΄ | π΄ |
Request Queue Start/Stop/Pause βΉοΈ | β | π΄ | π΄ | π΄ |
Request Data Mapping βΉοΈ | β | π΅ | π΅ | N/A |
Cache Invalidation βΉοΈ | β | β | β | β |
File Uploading βΉοΈ | β | π΅ | π΅ | β |
Global Response Side-Effects βΉοΈ | β | π΄ | π΄ | π΄ |
Scroll Recovery βΉοΈ | β | β | β | β |
Simple Command Execution βΉοΈ | β | π΄ | π΄ | π΄ |
Requests Manager βΉοΈ | β | π΄ | π΄ | π΄ |
Tabs Storages Synchronization βΉοΈ | π΄ | π΄ | π΄ | π΄ |
Tabs Dispatching Synchronization βΉοΈ | π΄ | π΄ | π΄ | π΄ |